home *** CD-ROM | disk | FTP | other *** search
/ Singles Flirt Up Your Life! (German) / Singles Flirt Up Your Life.iso / data1.cab / Statemachine / bedChar.lua < prev    next >
Text File  |  2004-01-29  |  7KB  |  286 lines

  1. -- bed character state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.     
  6.         local bed = getStateObjectFromID(msg.sender);
  7.         storeStateObject("bed", bed);
  8.         
  9.         if (bed) then
  10.             -- bed does exist
  11.             local actionPointName = retrieveData("actionPointName");
  12.             local actionPoint = getParent().getFreeActionPoint(bed, actionPointName);
  13.             
  14.             if (actionPoint) then
  15.                 -- action point is free
  16.                 getParent().lockActionPoints(bed);
  17.                  if (actionPointName == "layDown2") then
  18.                     storeData("mirrorAnims", true);
  19.                 else
  20.                     storeData("mirrorAnims", false);
  21.                 end
  22.                 
  23.                 local blanket = bed.findChildGO("blanket");
  24.                 if (not blanket) then
  25.                     print("blanket not found");
  26.                 else
  27.                     storeStateObject("blanket", blanket);
  28.                 end
  29.             else
  30.                 -- action point is not free anymore
  31.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  32.                 sendMsg("emoThink", getParent().walkSO);
  33.                 exitStateMachine();
  34.             end
  35.         else
  36.             -- bed does not exist anymore
  37.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  38.             sendMsg("emoThink", getParent().walkSO);
  39.             exitStateMachine();
  40.         end
  41.             
  42.         freeHands(getParent());
  43.     end )
  44.     
  45.     onExit(function(msg)
  46.         print("EXIT: bedChar SM");
  47.                 
  48. --        local bed = retrieveStateObject("bed");
  49. --        if (bed) then
  50. --            getParent().unlockActionPoints(bed);
  51. --            getParent().stopAllActivities(bed);
  52. --            removeStateObject("bed");
  53. --        end;
  54.         
  55.         unlockAll("bed");
  56.         
  57.         -- removeStateObject("blanket");
  58.         
  59.     end )
  60.     
  61.     -- test if we need to cancel
  62.     onMsg("test", function(msg)
  63.         if testCancel() or testCancelSleeping() then
  64.             setState("outOfBed");
  65.         else
  66.             sendDelayedMsgThis("test", 1000);
  67.         end
  68.     end )
  69.     
  70.     
  71.     
  72.     state("undress")
  73.     
  74.         onEnter(function(msg)
  75.             --startAnimation("ausziehen2");
  76.             startAnimation(getChangeOutfitAnim(getParent()));
  77.             sendDelayedMsgThis("underwear", 1600);
  78.         end )
  79.         
  80.         onMsg("underwear", function(msg)
  81.             changeOutfit(getParent(), UNDERWEAR);
  82.         end )
  83.     
  84.         onMsg("end", function(msg)
  85.             setState("layDown");
  86.         end )
  87.     
  88.     
  89.  
  90.         -- lay down on bed
  91.     state("layDown")
  92.     
  93.         onEnter(function(msg)
  94.         
  95.         
  96.             if (not hasOutfit(getParent(), UNDERWEAR)) then
  97.                 setState("undress");
  98.                 return
  99.             end
  100.         
  101.         
  102.             startAnimation("laydownBed", retrieveData("mirrorAnims"));
  103.                     
  104.             local bed = retrieveStateObject("bed");
  105.             bed.playSound("bedLaydown");
  106.             
  107.             local blanket = retrieveStateObject("blanket");
  108.             blanket.startSkeletonAnimation("blanketLayDownBed", retrieveData("mirrorAnims"));
  109.             
  110.         end )
  111.     
  112.         onMsg("end", function(msg)
  113.             if testCancel() or testCancelSleeping() then
  114.                 setState("outOfBedFast");
  115.             else
  116.                 setState("lieInBed");
  117.             end
  118.         end )
  119.     
  120.     -- sleeping - lying down quietly
  121.     state("lieInBed")
  122.     
  123.         onEnter(function(msg)
  124.             local bed = retrieveStateObject("bed");
  125.             getParent().startActivity("sleep", bed);
  126.             -- character now sleeping
  127.             getParent().setSleeping(true);
  128.  
  129.             startAnimation("lieInBed", retrieveData("mirrorAnims"));
  130.             sendMsg("eyeClose", getParent().mimicSO);
  131.             getParent().setEmoticon(EMOTICON_SLEEPING);
  132.             
  133.         end )
  134.         
  135.     
  136.         onMsg("end", function(msg)
  137.             if testCancel() or testCancelSleeping() then
  138.                 setState("outOfBed");
  139.             else
  140.                 sendDelayedMsgThis("test", 1000);
  141.                 setDelayedState("sleepingTurnToLeftSide", random(5000, 10000));
  142.             end
  143.         end )    
  144.         
  145.     -- sleeping - turn to to left side
  146.     state("sleepingTurnToLeftSide")
  147.     
  148.         onEnter(function(msg)
  149.             startAnimation("sleepingTurnToLeftSide", retrieveData("mirrorAnims"));
  150.             
  151.             local blanket = retrieveStateObject("blanket");
  152.             blanket.startSkeletonAnimation("blanketTurnToLeftSide", retrieveData("mirrorAnims"));
  153.         end )
  154.     
  155.     
  156.         onMsg("end", function(msg)
  157.             if testCancel() or testCancelSleeping() then
  158.                 setState("outOfBed");
  159.             else
  160.                 sendDelayedMsgThis("test", 1000);
  161.                 setDelayedState("sleepingTurnToTommy", random(5000, 10000));
  162.             end
  163.         end )    
  164.         
  165.     -- sleeping - turn to to tummy
  166.     state("sleepingTurnToTommy")
  167.     
  168.         onEnter(function(msg)
  169.             startAnimation("sleepingTurnToTommy", retrieveData("mirrorAnims"));
  170.             
  171.             local blanket = retrieveStateObject("blanket");
  172.             blanket.startSkeletonAnimation("blanketTurnToTommy", retrieveData("mirrorAnims"));
  173.         end )
  174.     
  175.     
  176.         onMsg("end", function(msg)
  177.             if testCancel() or testCancelSleeping() then
  178.                 setState("outOfBed");
  179.             else
  180.                 sendDelayedMsgThis("test", 1000);
  181.                 setDelayedState("sleepingTurnToRightSide", random(5000, 10000));
  182.             end
  183.         end )    
  184.         
  185.     -- sleeping - turn to to tummy
  186.     state("sleepingTurnToRightSide")
  187.     
  188.     
  189.         onEnter(function(msg)
  190.             startAnimation("sleepingTurnToRightSide", retrieveData("mirrorAnims"));
  191.             
  192.             local blanket = retrieveStateObject("blanket");
  193.             blanket.startSkeletonAnimation("blanketTurnToRightSide", retrieveData("mirrorAnims"));
  194.         end )
  195.     
  196.     
  197.         onMsg("end", function(msg)
  198.             if testCancel() or testCancelSleeping() then
  199.                 setState("outOfBed");
  200.             else
  201.                 sendDelayedMsgThis("test", 1000);
  202.                 setDelayedState("sleepingTurnToBack", random(5000, 10000));
  203.             end
  204.         end )    
  205.         
  206.     -- sleeping - turn to back
  207.     state("sleepingTurnToBack")
  208.     
  209.         onEnter(function(msg)
  210.             startAnimation("sleepingTurnToBack", retrieveData("mirrorAnims"));
  211.             
  212.             local blanket = retrieveStateObject("blanket");
  213.             blanket.startSkeletonAnimation("blanketTurnToBack", retrieveData("mirrorAnims"));
  214.         end )
  215.     
  216.     
  217.         onMsg("end", function(msg)
  218.             if testCancel() or testCancelSleeping() then
  219.                 setState("outOfBed")
  220.             else
  221.                 sendDelayedMsgThis("test", 1000);
  222.                 setDelayedState("lieInBed", random(5000, 10000));
  223.             end
  224.         end )    
  225.         
  226.     -- get out of bed
  227.     state("outOfBed")
  228.     
  229.         onEnter(function(msg)
  230.         
  231.             startAnimation(genderize(getParent(), "standupBed"), retrieveData("mirrorAnims"));
  232.             -- character not sleeping anymore
  233.             getParent().setSleeping(false);    
  234.             
  235.             sendMsg("neutral", getParent().mimicSO);
  236.             getParent().setEmoticon("");
  237.             
  238.             getParent().playSound(genderize(getParent(), "wakeUp"));
  239.  
  240.             local blanket = retrieveStateObject("blanket");
  241.             local blanketAnimSpeed = cond(getParent().isMale(), 1.0, 2.0)
  242.             blanket.startSkeletonAnimation("blanketStandupBed", retrieveData("mirrorAnims"), blanketAnimSpeed);
  243.                                     
  244.             local bed = retrieveStateObject("bed");
  245.             --bed.stopSound("Bettgerausch");
  246.             getParent().stopAllActivities(bed);
  247.         end )
  248.     
  249.         onMsg("end", function(msg)
  250.         
  251.             --local blanket = retrieveStateObject("blanket");
  252.             --blanket.startSkeletonAnimation("blanketStoodupBed", retrieveData("mirrorAnims"));
  253.             
  254.             flipPoseDirection();
  255.             setCurrentPosition();
  256.             exitStateMachine();
  257.         end )
  258.         
  259.     -- get out of bed
  260.     state("outOfBedFast")
  261.     
  262.         onEnter(function(msg)
  263.             startAnimation("laydownBed", retrieveData("mirrorAnims"), -1.0, 1000);
  264.             -- character not sleeping anymore
  265.             getParent().setSleeping(false);    
  266.             
  267.             sendMsg("neutral", getParent().mimicSO);
  268.             getParent().setEmoticon("");
  269.             
  270.             local blanket = retrieveStateObject("blanket");
  271.             blanket.startSkeletonAnimation("blanketStandupBed", retrieveData("mirrorAnims"), 5.0);
  272.                                     
  273.             local bed = retrieveStateObject("bed");
  274.             --bed.stopSound("Bettgerausch");
  275.             getParent().stopAllActivities(bed);
  276.         end )
  277.     
  278.         onMsg("end", function(msg)            
  279.             flipPoseDirection();
  280.             setCurrentPosition();
  281.             exitStateMachine();
  282.         end )
  283.         
  284.             
  285.     
  286. endStateMachine()